perm filename L2[F8,ALS]3 blob
sn#319426 filedate 1977-12-04 generic text, type T, neo UTF8
1 *CHECKERS as of December 4 1977. EQU's
2 * S2 section
3 *Resident package addresses
4 JOYT EQU H'0C00'
5 LINE EQU H'0FDF'
6 SHCB EQU H'0FE2'
7 INPF EQU H'0FE3'
8 WTLN EQU H'0FE5'
9 TXC EQU H'0FE8'
10 CMRG EQU H'0FEA'
11 DBNC EQU H'0FEB'
12 UPI EQU H'0FFA'
13 JOYI EQU H'21AD'
14 IJS EQU H'22DB'
15 SHL EQU H'27C6'
16 SHR EQU H'27D3'
17 PUSH EQU H'40A9'
18 POPS EQU H'40BC'
19 SPS EQU H'40D0'
20 WDG EQU H'4105'
21 WAUD EQU H'41C8'
22 WAU1 EQU H'41CC'
23 CDS EQU H'41D5'
24 WMS EQU H'4205'
25 UDAT EQU H'424D'
26 TRAN EQU H'43CD'
27 FCS EQU H'43D6'
28 WAIT EQU H'4501'
29 TIR EQU H'45DB'
30 CLER EQU H'4762'
31 *Misc. constants
32 TCMD EQU H'44'
33 BCMD EQU H'6D'
34 TCOL EQU H'80' TEXT COLOR
35 ULIN EQU H'F5'
36 COM EQU H'8F7'
37 *
38 *RAM assignments
39 BFLG EQU H'0C20'
40 BLNF EQU H'0C21' Blink flag
41 XBLN EQU H'0C22' X value to blink
42 YBLN EQU H'0C23' Y value to blink
43 BCNT EQU H'0C24' Counter used in OKMV
44 BKMV EQU H'0C25' Data to index book moves
45 HSAV EQU H'0C26' H save location
46 HSAL EQU H'0C27' HL save location
47 PLY0 EQU H'0C28' Players choice of ply depth
48 COL0 EQU H'0C29' 0 if machine plays black
49 SELX EQU H'0C2A' Move count
50 AP20 EQU H'0C2C' ACTM+PASM+9 at HL=20
51 XOLD EQU H'0C2D' X coord touch point (double jump)
52 YOLD EQU H'0C2E' Y coord touch point (double jump)
53 CFLG EQU H'0C2F' Compression flag for ply record
54 OBJ0 EQU H'0C30' Board 1, thru H'0E0F'
55 TREE EQU H'0E10' Tree data, thru H'0EFF', Player's b
56 TRE2 EQU H'0E20' Machine's first board here
57 TRE3 EQU H'0E30' PLY 1 location
58 TRE5 EQU H'0E50' PLY 3 location
59 PLMD EQU H'0E5B' Used for temp store of player's mov
60 PLMV EQU H'0ED0' Overlay region used for player's mo
61 PLMF EQU H'0EE0' and move numbers
62 SCOR EQU H'0EF0' 28 bytes for scores
63 XPOS EQU H'0F0C' XPOSITION(CURSOR)
64 YPOS EQU H'0F0F' YPOSITION(CURSOR)
65 OBJ1 EQU H'0F10' Board 2, thru H'0FAF'
66 MOBS EQU H'0FB0' Mobility and DJ flags (14 bytes)
67 RGSV EQU H'0FC1' Register save start (int. update)
68 *
69 *Scratch pad assignments
70 TEMP EQU H'8'
71 J EQU H'9'
72 HU EQU H'A'
73 HL EQU H'B'
74 PLOC EQU O'3' LISU value for ACTIVE and PASSIVE
75 KLOC EQU O'4' LISU value for KING's and special d
76 ELOC EQU O'5' LISU value for EMPTY's area
77 ISA EQU O'30' ISAR value for active area
78 ISP EQU O'34' ISAR value for passive
79 ISK EQU O'40' ISAR value for kings
80 ACTM EQU O'46' Location of Active material count
81 PASM EQU O'47' Location of Passive material count
82 ISE0 EQU O'50' ISAR value for guard byte
83 ISE EQU O'51' ISAR value for empty (with offset)
84 *Mimimum ply depths
85 PLYT EQU H'FD' Ply depth for Robot Tom (stored as
86 PLYD EQU H'FC' Ply depth for Robot Dick
87 PLYH EQU H'FB' Ply depth for Robot Harry
88 *SPECIAL CONSTANTS
89 MAT EQU 0 As used in EVAL
90 POT EQU 6
91 X EQU H'1'
92 Y EQU H'2'
93 VX EQU H'3'
94 VY EQU H'4'
95 CHT EQU H'3' CURSOR HEIGHT
96 YTST EQU H'9'
97 XZOP EQU H'34' Line for restorre of X zoom
98 MAXY EQU H'4D' MAX Y COORD (=H'4F'-CHT)
99 *Linkage locations
100 PMOV EQU H'10F5' Player's move
101 DJMP EQU H'120E' Jump again entry
102 WMC EQU H'122B' Write message
103 BORD EQU H'1313' Normal redo of board
104 MWAD EQU H'1634'
105 ENIN EQU H'165C'
106 DAI EQU H'1679'
107 SHOW EQU H'1721' Debugging aid to show board
108 ORG H'1790' SELE JUMP
109 *-*-*-
110 1790 4B SELE LR A,HL
111 1791 14 SR 4
112 1792 25 02 CI H'2'
113 1794 94 07 BNZ SEL2
114 1796 28 17 21 PI SHOW
115 1799 28 1F 32 PI WAST Debugging show board
116 179C 63 SEL2 LISU PLOC
117 179D 68 LISL 0
118 179E 10 LR DC,H
119 179F 7C LIS H'C' To get MOVE byte
120 17A0 8E ADC
121 17A1 16 LM
122 17A2 50 LR 0,A Save it temporarily
123 17A3 F0 NS 0 To set status byte
124 17A4 94 04 BNZ SEL3
125 17A6 29 1A 8D JMP NEXT To get next MOVE byte
126 17A9 70 SEL3 CLR
127 17AA 18 COM -1 in A
128 17AB 8E ADC Get back to move byte
129 17AC C0 AS 0
130 17AD F0 NS 0 Remove right-most on-bit
131 17AE 17 ST Put remaining bits back (and index
132 17AF E0 XS 0 This gets the extracted bit
133 17B0 56 LR 6,A Save it in 6
134 17B1 16 LM Now get the byte designation
135 17B2 55 SEL4 LR 5,A
136 17B3 12 SR 1
137 17B4 12 SR 1
138 17B5 21 03 NI H'3' Separate the byte indicator part
139 17B7 54 LR 4,A Save it in 4
140 17B8 45 LR A,5
141 17B9 21 13 NI H'13' Separate the JUMP bit and the dire
142 17BB 55 LR 5,A Save them in 5
143 17BC 20 18 DELE LI ISA Process Active and Kings for sourc
144 17BE C4 AS 4 Add byte #
145 17BF 0B LR IS,A Get to initial byte
146 17C0 4C LR A,S
147 17C1 53 LR 3,A
148 17C2 E6 XS 6 Delete moving piece
149 17C3 5C LR S,A from byte
150 17C4 64 LISU KLOC To get to corresponding KING byte
151 17C5 4C LR A,S
152 17C6 F6 NS 6 Was the piece a king?
153 17C7 84 04 BZ DEL2
154 17C9 EC XS S If it was delete king bit
155 17CA 5C LR S,A
156 17CB 77 LIS H'7' Non-zero in 2 for king
157 17CC 52 DEL2 LR 2,A 0 for man, 7 for king, (later 1 fo
158 17CD 63 LISU PLOC Back to active section
159 *Now locate captured piece if jump or find destination in normal m
160 17CE 46 LR A,6 Recall MOVE bit
161 17CF 14 SR 4
162 17D0 84 10 BZ INRH Bit was in right half of byte
163 17D2 53 INLH LR 3,A Save partially shifted MOVE bit
164 17D3 71 LIS H'1' Get direction
165 17D4 F5 NS 5 To test right-most bit
166 17D5 84 04 BZ INL2 RF or LB move where 4 shift is cor
167 17D7 43 LR A,3
168 17D8 12 SR 1 LF and LB require an additional sh
169 17D9 53 LR 3,A
170 17DA 72 INL2 LIS H'2' Now test for fore or aft
171 17DB F5 NS 5
172 17DC 84 13 BZ BOTH Forward move, no byte shift needed
173 17DE 4E LR A,D Only to decrement ISAR
174 17DF 90 10 INL3 BR BOTH
175 *
176 17E1 46 INRH LR A,6 Get MOVE bit again
177 17E2 15 SL 4 Left shift if in right half
178 17E3 53 LR 3,A Save partially shifted MOVE bit
179 17E4 71 LIS H'1'
180 17E5 F5 NS 5 Get direction
181 17E6 94 04 BNZ INR2 LF or LB where 4 shift is correct
182 17E8 43 LR A,3
183 17E9 13 SL 1 RF and RB require an additional sh
184 17EA 53 LR 3,A
185 17EB 72 INR2 LIS H'2' Now test fore and aft
186 17EC F5 NS 5
187 17ED 94 02 BNZ BOTH
188 17EF 4D LR A,I Only to increment ISAR
189 17F0 45 BOTH LR A,5 Now is this a jump or a normal mov
190 *ISAR still points to active region but may designate
191 *an empty square or the capture square
192 17F1 14 SR 4 Set status for jump bit
193 17F2 94 04 BNZ JUMP
194 17F4 29 18 C1 JMP NORM It's a normal move
195 17F7 0A JUMP LR A,IS
196 17F8 24 04 AI H'4' To get to passive pieces
197 17FA 0B LR IS,A
198 17FB 4C LR A,S
199 17FC E3 XS 3 Remove captured piece
200 17FD 5C LR S,A
201 17FE 0A LR A,IS
202 17FF 24 04 AI H'4' Corresponding king location
203 1801 0B LR IS,A
204 1802 4C LR A,S Get byte
205 1803 F3 NS 3 Is the piece a king?
206 1804 84 07 BZ JUM1 No
207 1806 EC XS S Yes, Remove it
208 1807 5C LR S,A
209 1808 72 LIS H'2'
210 1809 18 COM Fast -3
211 180A 90 03 BR JU11
212 180C 71 JUM1 LIS H'1'
213 180D 18 COM Fast -2
214 180E 50 JU11 LR 0,A
215 180F 20 27 LI PASM
216 1811 0B LR IS,A
217 1812 4C LR A,S
218 1813 C0 AS 0
219 1814 5C LR S,A
220 1815 20 18 JU12 LI ISA Back to moved-from location
221 1817 C4 AS 4 Byte number is in 4
222 1818 0B LR IS,A
223 1819 72 LIS H'2'
224 181A F5 NS 5 Test for fore or aft
225 181B 84 04 BZ JUMA Fore move
226 181D 4E LR A,D Decrement ISAR (destination always
227 181E 90 02 BR JUMB
228 1820 4D JUMA LR A,I Increment ISAR
229 1821 0A JUMB LR A,IS Get the destination byte off-set
230 1822 24 E8 AI H'E8' by subtracting O'30' from ISAR val
231 1824 54 LR 4,A needed if there is a continuation
232 1825 71 LIS H'1' Get direction
233 1826 F5 NS 5 Test for right or left
234 1827 46 LR A,6 Get original piece location
235 1828 84 04 BZ JUM2 0 for R move, ≠0 for L move
236 182A 12 SR 1 Left moves involve a right shift o
237 182B 90 02 BR JUM3
238 182D 13 JUM2 SL 1 Right moves involve a left shift o
239 182E 53 JUM3 LR 3,A Save bit byte in 3, freeing 6 for
240 182F 51 LR 1,A As mask in FIND for continuation
241 1830 4C LR A,S
242 1831 E3 XS 3 Set piece down
243 1832 5C LR S,A
244 1833 70 CLR
245 1834 C2 AS 2 Was the piece a king?
246 1835 84 05 BZ JUMC No, might be a promotion
247 1837 70 CLR
248 1838 50 LR 0,A Temporary record of promotion cred
249 1839 90 1A BR JUM6 Already a king so no promotion
250 183B 72 JUMC LIS H'2'
251 183C F5 NS 5 Which side is active
252 183D 0A LR A,IS
253 183E 84 09 BZ JUM4 0 if forward
254 1840 25 18 CI O'30' Is this byte 0?
255 1842 94 27 BNZ JU71 No, so no promotion
256 1844 7F LIS H'F' and the king row?
257 1845 15 SL 4
258 1846 90 06 BR JUM5 Promotion indicated, no double jum
259 1848 25 1B JUM4 CI O'33' Is this byte 3?
260 184A 94 1F BNZ JU71 No, so no promotion
261 184C 7F LIS H'F' and the king row?
262 184D F3 JUM5 NS 3
263 184E 84 1B BZ JU71 No
264 1850 71 LIS H'1' 1 for promotion
265 1851 52 LR 2,A It was 0
266 1852 50 LR 0,A Credit for promotion
267 1853 56 LR 6,A Used in FIND for no continuation
268 1854 64 JUM6 LISU KLOC Get to King position
269 1855 4C LR A,S
270 1856 C3 AS 3 Put down the king
271 1857 5C LR S,A
272 1858 70 CLR
273 1859 E0 XS 0 Was there a promotion?
274 185A 84 0F BZ JU71 No
275 185C 64 LISU 4
276 185D 6E LISL 6
277 185E 4C LR A,S
278 185F 1F INC Add for promotion
279 1860 5C LR S,A
280 1861 90 05 BR JUM9 Can be no continuation if promotio
281 1863 70 JUM7 CLR
282 1864 E0 XS 0 Should we check for a double jump?
283 1865 84 04 BZ JU71 Yes, a 0 means no promotion
284 1867 29 18 F1 JUM9 JMP FORE
285 * Set up conditions to try to find a continuation
286 186A 4B JU71 LR A,HL
287 186B 14 SR 4
288 186C 25 0C CI H'C' Is there room?
289 186E 91 F8 BM JUM9 No
290 1870 25 01 CI H'1' Is this a player's board?
291 1872 94 0C BNZ JU78 No
292 1874 2A 0E D0 DCI PLMV Yes, restart PLMV
293 1877 70 CLR
294 1878 17 ST
295 1879 2A 0C 2F DCI CFLG Zero this as
296 187C 17 ST safety precaution
297 187D 90 28 BR JU77 and keep to this level
298 187F 10 JU78 LR DC,H
299 1880 20 1C LI H'1C' Get to byte location
300 1882 8E ADC in the "passed board" position
301 1883 43 LR A,3 Save destination info
302 1884 17 ST the move byte
303 1885 44 LR A,4
304 1886 17 ST and the byte #
305 1887 70 CLR
306 1888 18 COM and a flag of -1
307 1889 17 ST in the ACTM position
308 188A 42 LR A,2 and # of moves in PASM
309 188B 17 ST
310 188C 4B LR A,HL
311 188D 14 SR 4
312 188E 2A 0E F0 DCI SCOR Advance score
313 1891 24 FE AI -H'2' Scor not saved for HL=1
314 1893 13 SL 1
315 1894 8E ADC from current board
316 1895 0E LR Q,DC
317 1896 2C XDC
318 1897 0F LR DC,Q
**OPERATOR SYNTAX LINE # 319
319
320 1898 74 LIS H'4'
321 1899 8E ADC
322 189A 2C XDC
323 189B 16 LM
324 189C 2C XDC
325 189D 17 ST
326 189E 2C XDC
327 189F 16 LM
328 18A0 2C XDC
329 18A1 17 ST
330 18A2 72 LIS H'2' Copy data two blocks forward
331 18A3 15 SL 4
332 18A4 CB AS HL
333 18A5 5B LR HL,A
334 18A6 10 JU77 LR DC,H
335 18A7 63 LISU PLOC SC to RA direct
336 18A8 68 LISL 0
337 18A9 4D JU72 LR A,I
338 18AA 17 ST
339 18AB 8F FD BR7 JU72
340 18AD 4D LR A,I
341 18AE 17 ST
342 18AF 64 LISU KLOC
343 18B0 4D JU73 LR A,I
344 18B1 17 ST
345 18B2 8F FD BR7 JU73
346 18B4 4D LR A,I
347 18B5 17 ST
348 18B6 28 1E FF PI EMPT Re-do to reflect changes
349 18B9 43 LR A,3 Save destination
350 18BA 51 LR 1,A as mask for FIND
351 18BB 70 CLR
352 18BC 52 LR 2,A
353 18BD 56 LR 6,A
354 18BE 29 1B 08 JMP RFJ Find continuations if any
355 * NORM FORE
356 *Now make normal move
357 18C1 10 NORM LR DC,H Back in step
358 18C2 70 CLR
359 18C3 50 LR 0,A Flag for no promotion
360 18C4 63 LISU PLOC Get back to Active pieces
361 18C5 4C LR A,S LISL still OK
362 18C6 C3 AS 3
363 18C7 5C LR S,A Put in moved piece
364 18C8 42 LR A,2 Was it a king
365 18C9 F2 NS 2
366 18CA 94 18 BNZ NOM6 Yes so don't promote but do put ki
367 18CC 72 LIS H'2'
368 18CD F5 NS 5 Test for direction
369 18CE 0A LR A,IS
370 18CF 84 09 BZ NOM4 Is it going forward?
371 18D1 25 18 CI O'30' Did it get to the byte 0?
372 18D3 94 1D BNZ FORE No
373 18D5 7F LIS H'F' and in king row?
374 18D6 15 SL 4
375 18D7 90 06 BR NOM5 Mark for promotion
376 18D9 25 1B NOM4 CI O'33' Did it get to byte 3?
377 18DB 94 15 BNZ FORE No
378 18DD 7F LIS H'F' and in king row?
379 18DE F3 NOM5 NS 3
380 18DF 84 11 BZ FORE No
381 18E1 71 LIS H'1'
382 18E2 50 LR 0,A A promotion flag
383 18E3 64 NOM6 LISU KLOC Now get to king byte
384 18E4 4C LR A,S Get corresponding king byte for de
385 18E5 C3 AS 3 Insert king
386 18E6 5C LR S,A And replace byte
387 18E7 70 CLR
388 18E8 C0 AS 0
389 18E9 84 07 BZ FORE
390 18EB 20 26 LI ACTM Get to active material location
391 18ED 0B LR IS,A
392 18EE 4C LR A,S
393 18EF 1F INC Credit for promotion
394 18F0 5C LR S,A
395 18F1 2A 0C 2F FORE DCI CFLG Have we compacted?
396 18F4 0E LR Q,DC
397 18F5 16 LM
398 18F6 50 LR 0,A Save value to add
399 18F7 0F LR DC,Q
400 18F8 70 CLR and clear
401 18F9 17 ST
402 18FA 4B LR A,HL Where are we?
403 18FB 14 SR 4
404 18FC 25 01 CI H'1'
405 18FE 94 04 BNZ FOR8
406 1900 29 19 97 JMP FOR5 Player's move has been made
407 1903 47 FOR8 LR A,7
408 1904 18 COM Change color
409 1905 57 LR 7,A
410 1906 71 LIS H'1'
411 1907 15 SL 4
412 1908 CB AS HL
413 1909 5B LR HL,A
414 190A 10 LR DC,H GET back in step
415 190B 28 1A 1E PI SCRA Prepare for normal advance
416 190E 4B LR A,HL Can we advance score?
417 190F 14 SR 4
418 1910 25 03 CI H'3' Note HL has already been advanced
419 1912 91 0D BM FOR2 Advance score normally
420 1914 94 60 BNZ FOR4 Special case
421 1916 2A 0E F2 DCI SCOR+2
422 1919 20 C1 LI H'C1'
423 191B 17 ST
424 191C 1F INC
425 191D 17 ST
426 191E 90 56 BR FOR4 May still be a special case
427 1920 24 FE FOR2 AI -H'2' Scor not saved for HL=10
428 1922 13 SL 1 Scores take 2 bytes each so *2
429 1923 2A 0E F0 DCI SCOR
430 1926 8E ADC Current location
431 1927 0E LR Q,DC
432 1928 2C XDC
433 1929 0F LR DC,Q
434 192A 73 LIS H'3'
435 192B 18 COM Fast -H'4'
436 192C 8E ADC Get to earlier entry
437 192D 16 LM Copy it
438 192E 2C XDC
439 192F 17 ST
440 1930 2C XDC
441 1931 25 C1 CI H'C1'
442 1933 16 LM
443 1934 2C XDC
444 1935 94 04 BNZ FOR7
445 1937 1F INC Add 2 for win or lose reporting
446 1938 1F INC
447 1939 C0 AS 0
448 193A 17 FOR7 ST
449 * Compacting routine to save space. Note this
450 * complicates reporting of win and lose distances.
451 193B 4B LR A,HL
452 193C 14 SR 4
453 193D 25 06 CI H'6' Room to compact?
454 193F 81 32 BP FOR3 No, let player make his next move
455 1941 24 FC AI -H'4' 2 back in MOB
456 1943 2A 0F B0 DCI MOBS Compacting possible only if but
457 1946 8E ADC single moves available for 2
458 1947 16 LM successive moves
459 1948 25 01 CI H'1'
460 194A 94 27 BNZ FOR3 More than 1 move
461 194C 16 LM
462 194D 25 01 CI H'1'
463 194F 94 22 BNZ FOR3 More than 1 move
464 1951 4B LR A,HL
465 1952 14 SR 4
466 1953 24 FC AI -H'4' Back 2 levels
467 1955 13 SL 1
468 1956 2A 0E F0 DCI SCOR
469 1959 8E ADC
470 195A 16 LM
471 195B 25 C1 CI H'C1'
472 195D 94 06 BNZ FORY
473 195F 0E LR Q,DC
474 1960 72 LIS H'2'
475 1961 88 AM
476 1962 0F LR DC,Q
477 1963 17 ST
478 1964 71 FORY LIS H'1'
479 1965 18 COM Back up 2 levels
480 1966 15 SL 4
481 1967 CB AS HL
482 1968 5B LR HL,A
483 1969 2A 0C 2F DCI CFLG
484 196C 72 LIS H'2'
485 196D 17 ST Set flag for SCOR check
486 196E 10 LR DC,H GET back in step
487 196F 28 1A 1E PI SCRA Prepare for normal advance
488 1972 29 1A EB FOR3 JMP FIND Go forward normally
489 1975 2A 0C 2A FOR4 DCI SELX
490 1978 0E LR Q,DC
491 1979 16 LM
492 197A 25 01 CI H'1'
493 197C 91 F5 BM FOR3 Normal play
494 197E 1F INC Book or random move has been made
495 197F 0F LR DC,Q
496 1980 17 ST so count this as a move
497 1981 70 CLR Clear start of PLMV list for
498 1982 2A 0E D0 DCI PLMV listing player's possible moves
499 1985 17 ST
500 1986 10 LR DC,H
501 1987 2C XDC
502 1988 2A 0E 10 DCI TREE Prepare for TRAN
503 198B 11 LR H,DC
504 198C 71 LIS H'1'
505 198D 15 SL 4
506 198E 62 LISU 2
507 198F 68 LISL 0
508 1990 5C LR S,A
509 1991 28 43 CD PI TRAN
510 1994 29 1A EB JMP FIND FIND exits to PMOV when HL is H'10
511 1997 28 13 13 FOR5 PI BORD Show board after players move
512 199A 74 LIS H'4' "MY MOVE"
513 199B 50 LR 0,A
514 199C 28 12 2B PI WMC
515 199F 2A 0E F0 DCI SCOR Start scores off at H'C000'
516 19A2 20 C1 LI H'C1' so that CM's will always work
517 19A4 17 ST
518 19A5 17 ST
519 19A6 17 ST
520 19A7 1F INC
521 19A8 17 ST
522 19A9 47 LR A,7
523 19AA 18 COM Change color
524 19AB 57 LR 7,A
525 19AC 71 LIS H'1'
526 19AD 15 SL 4
527 19AE CB AS HL
528 19AF 5B LR HL,A
529 19B0 10 LR DC,H Advance H
530 19B1 28 1A 1E PI SCRA SC to RA with sides reversed
531 19B4 10 LR DC,H
532 19B5 28 1A 0D PI RASC RA to SC preparing for a normal mo
533 19B8 2A 0C 2A DCI SELX
534 19BB 0E LR Q,DC
535 19BC 16 LM
536 19BD 1F INC Add 1 to move count
537 19BE 0F LR DC,Q
538 19BF 17 ST
539 19C0 25 01 CI H'1'
540 19C2 84 04 BZ FOR6 Use stored move
541 19C4 29 1A EB JMP FIND Go find normal reply
542 19C7 62 FOR6 LISU 2 Get random number
543 19C8 6D LISL 5
544 19C9 73 LIS H'3'
545 19CA FC NS S 0 to 3 random number
546 19CB 50 LR 0,A
547 19CC 12 SR 1
548 19CD 51 LR 1,A 0 to 1 random number
549 19CE 71 LIS H'1'
550 19CF F0 NS 0
551 19D0 50 LR 0,A 2nd 0 to 1 random number
552 * Machine to make 2nd move from book
553 19D1 2A 0C 25 DCI BKMV Get stored move munber
554 19D4 16 LM
555 19D5 13 SL 1 X2, 2 entries for each input move
556 19D6 C0 AS 0 Random choice between them
557 19D7 2A 1F 24 DCI BOK2 Stored table of book replies
558 19DA 8E ADC
559 19DB 16 LM Get reply number
560 19DC 50 LR 0,A
561 19DD 70 CLR Use second number to select which
562 19DE E1 XS 1
563 19DF 40 LR A,0
564 19E0 84 02 BZ BMV2
565 19E2 14 SR 4
566 19E3 21 07 BMV2 NI H'7'
567 19E5 50 LR 0,A The final selection
568 19E6 2A 1A 08 DCI REDM Possible Red moves
569 19E9 16 BM17 LM Get byte record
570 19EA 51 LR 1,A
571 19EB 41 BM18 LR A,1
572 19EC F1 NS 1
573 19ED 94 04 BNZ BM19 Is this byte exhausted?
574 19EF 16 LM Step over byte info
575 19F0 90 F8 BR BM17 Go to next byte record
576 19F2 52 BM19 LR 2,A
577 19F3 24 FF AI H'FF' Subtract 1
578 19F5 F1 NS 1
579 19F6 51 LR 1,A byte less rightmost bit
580 19F7 E2 XS 2 This leaves 1 bit in A
581 19F8 30 DS 0
582 19F9 81 F1 BP BM18
583 19FB 56 LR 6,A Save the byte bit
584 19FC 16 LM Get the byte info
585 19FD 54 LR 4,A The byte indicator
586 19FE 10 LR DC,H
587 19FF 7C LIS H'C'
588 1A00 8E ADC
589 1A01 46 LR A,6
590 1A02 17 ST
591 1A03 44 LR A,4
592 1A04 17 ST
593 1A05 29 17 90 JMP SELE
594 *-*-*- Initial moves for red
595 1A08 07 REDM DC B'00000111' 3 pieces
596 1A09 0A DC B'00001010' Byte 2, RB
597 1A0A 0F DC B'00001111' 4 pieces
598 1A0B 0B DC B'00001011' Byte 2, LB
599 1A0C 00 DC H'00'
600 * RASC SCRA FKT STMV
601 *-*-*- RASC RAM to SC transfer
602 1A0D 08 RASC LR K,P RAM to SC
603 1A0E 63 LISU PLOC ←SC buffer with Active and Passive
604 1A0F 68 LISL 0
605 1A10 16 RAS2 LM
606 1A11 5D LR I,A
607 1A12 8F FD BR7 RAS2
608 1A14 16 LM
609 1A15 5D LR I,A
610 1A16 64 LISU KLOC
611 1A17 16 RAS3 LM
612 1A18 5D LR I,A
613 1A19 8F FD BR7 RAS3
614 1A1B 16 LM
615 1A1C 5D LR I,A
616 1A1D 0C PK
617 * SCRA SC to RAM with side reversal
618 1A1E 08 SCRA LR K,P SC to RAM for side reversal
619 1A1F 63 LISU PLOC
620 1A20 6C LISL 4
621 1A21 78 LIS H'8'
622 1A22 50 LR 0,A
623 1A23 4D SCR1 LR A,I
624 1A24 17 ST
625 1A25 30 DS 0
626 1A26 94 FC BNZ SCR1
627 1A28 64 LISU KLOC
628 1A29 68 LISL 0
629 1A2A 74 LIS H'4'
630 1A2B 50 LR 0,A
631 1A2C 4D SCR2 LR A,I
632 1A2D 17 ST
633 1A2E 30 DS 0
634 1A2F 94 FC BNZ SCR2
635 1A31 70 CLR
636 1A32 17 ST
637 1A33 17 ST
638 1A34 6F LISL 7
639 1A35 4E LR A,D
640 1A36 17 ST
641 1A37 4E LR A,D
642 1A38 17 ST
643 1A39 0C PK
644 *-*-*- Test if Kings only can move
645 1A3A 08 FKT LR K,P
646 1A3B 70 CLR
647 1A3C C7 AS 7
648 1A3D 94 09 BNZ FK1 Only kings in this direction
649 1A3F 70 FKT2 CLR
650 1A40 E3 XS 3
651 1A41 0C PK Normal pieces OK
652 1A42 08 BKT LR K,P
653 1A43 70 CLR
654 1A44 C7 AS 7 Test sides for backward move
655 1A45 94 F9 BNZ FKT2 NORMAL pieces can move
656 1A47 72 FK1 LIS H'2'
657 1A48 15 SL 4
658 1A49 C4 AS 4
659 1A4A 0B LR IS,A KINGS only can move
660 1A4B 4C LR A,S
661 1A4C F3 NS 3
662 1A4D 53 LR 3,A
663 1A4E 0C PK
664 *Subroutine to add to MOBILITY, and to store MOVE and FLAG bytes i
665 1A4F 08 STMV LR K,P
666 1A50 4B LR A,HL
667 1A51 14 SR 4
668 1A52 25 01 CI H'01' Is this the player's board
669 1A54 94 19 BNZ STM3 No
670 1A56 2A 0E D0 DCI PLMV Player's moves stored separately
671 1A59 70 STM0 CLR
672 1A5A 8C XM
673 1A5B 84 04 BZ STM1 Find empty space
674 1A5D 16 LM Skip info space
675 1A5E 90 FA BR STM0 Try again
676 1A60 70 STM1 CLR Back up
677 1A61 18 COM
678 1A62 8E ADC
679 1A63 43 LR A,3
680 1A64 17 ST
681 1A65 44 LR A,4
682 1A66 13 SL 1
683 1A67 13 SL 1
684 1A68 C5 AS 5
685 1A69 17 ST
686 1A6A 70 CLR
687 1A6B 17 ST Store 0 as stop
688 1A6C 90 10 BR STM2
689 1A6E 70 STM3 CLR
690 1A6F E2 XS 2 To set status byte
691 1A70 94 0C BNZ STM2 One is already stored
692 1A72 10 LR DC,H Get back in step
693 1A73 7C LIS H'C' To get to MOVE byte
694 1A74 8E ADC
695 1A75 43 STM4 LR A,3 Get move byte
696 1A76 17 ST Store it in RAM
697 1A77 44 LR A,4 Get the byte pointer
698 1A78 13 SL 1
699 1A79 13 SL 1
700 1A7A C5 AS 5
701 1A7B 17 ST Put this into RAM
702 1A7C 10 LR DC,H May be necessary
703 1A7D 70 STM2 CLR
704 1A7E 50 LR 0,A To accumulate count
705 1A7F 43 LR A,3
706 1A80 30 STM5 DS 0
707 1A81 24 FF AI H'FF'
708 1A83 F3 NS 3 Removes rightmost bit
709 1A84 53 LR 3,A
710 1A85 94 FA BNZ STM5
711 1A87 40 LR A,0
712 1A88 18 COM
713 1A89 1F INC
714 1A8A C2 AS 2 Add in previous count
715 1A8B 52 LR 2,A
716 1A8C 0C PK
717 * NEXT FIND RFJ LFJ RBJ LBJ
718 1A8D 28 1E FF NEXT PI EMPT Needs redoing if came to SELE via
719 1A90 10 LR DC,H
720 1A91 4B LR A,HL
721 1A92 14 SR 4
722 1A93 25 03 CI H'3'
723 1A95 81 1E BP NEXX Can not be a continuation
724 1A97 73 LIS H'3' Look to earlier board data
725 1A98 18 COM Fast -4
726 1A99 8E ADC
727 1A9A 16 LM
728 1A9B 51 LR 1,A Get move byte just in case
729 1A9C 16 LM
730 1A9D 54 LR 4,A and byte info
731 1A9E 70 CLR
732 1A9F 52 LR 2,A
733 1AA0 8C XM Now look at ACTM
734 1AA1 81 12 BP NEXX Not a continuation board
735 1AA3 10 LR DC,H
736 1AA4 7D LIS H'D'
737 1AA5 8E ADC
738 1AA6 73 LIS H'3' Get last used direction
739 1AA7 8A NM
740 1AA8 1F INC
741 1AA9 25 03 CI H'3'
742 1AAB 91 15 BM NEXY Last direction used
743 1AAD 55 LR 5,A
744 1AAE 70 CLR
745 1AAF 18 COM
746 1AB0 56 LR 6,A Set continuation flag
747 1AB1 29 1B 63 JMP RBJ0
748 1AB4 10 NEXX LR DC,H
749 1AB5 7D LIS H'D' Last used byte info
750 1AB6 8E ADC
751 1AB7 16 LM
752 1AB8 55 LR 5,A
753 1AB9 21 0F NI H'F'
754 1ABB 1F INC
755 1ABC 50 LR 0,A
756 1ABD 25 0F CI H'F' Is this the last byte and directio
757 1ABF 81 04 BP NEXA
758 1AC1 29 1D 31 NEXY JMP AFT Yes, so back up
759 1AC4 10 NEXA LR DC,H
760 1AC5 71 LIS H'1' Set to 1 for normal back-up
761 1AC6 56 LR 6,A
762 1AC7 70 CLR
763 1AC8 18 COM
764 1AC9 51 LR 1,A All pieces allowed to move
765 1ACA 10 LR DC,H
766 1ACB 40 LR A,0
767 1ACC 12 SR 1
768 1ACD 12 SR 1
769 1ACE 21 03 NI H'3'
770 1AD0 54 LR 4,A
771 1AD1 45 LR A,5
772 1AD2 25 0F CI H'F'
773 1AD4 73 LIS H'3'
774 1AD5 91 0B BM NEXJ Jumps required
775 1AD7 F0 NS 0
776 1AD8 55 LR 5,A
777 1AD9 84 04 BZ NEN0
778 1ADB 29 1C AA JMP RBN0
779 1ADE 29 1C 5E NEN0 JMP RFN
780 1AE1 F0 NEXJ NS 0
781 1AE2 55 LR 5,A
782 1AE3 84 04 BZ NEJ0
783 1AE5 29 1B 63 JMP RBJ0
784 1AE8 29 1B 08 NEJ0 JMP RFJ
785 *We enter here on going forward
786 1AEB 10 FIND LR DC,H
787 1AEC 4B LR A,HL
788 1AED 14 SR 4
789 1AEE 25 02 CI H'2'
790 1AF0 94 0B BNZ FIN1
791 1AF2 7E LIS H'E' Compute ACTM+PASM+9
792 1AF3 8E ADC
793 1AF4 79 LIS H'9' Constant term
794 1AF5 88 AM
795 1AF6 88 AM
796 1AF7 2A 0C 2C DCI AP20 Used by EVAL to compute MAT
797 1AFA 17 ST
798 1AFB 10 LR DC,H
799 1AFC 28 1A 0D FIN1 PI RASC Get board into SC
800 1AFF 28 1E FF PI EMPT Compute the empty squares
801 1B02 70 CLR
802 1B03 54 LR 4,A Start with byte 0
803 1B04 52 LR 2,A Mobility count and move-found flag
804 1B05 56 LR 6,A So all moves will be found
805 1B06 18 COM
806 1B07 51 LR 1,A To find all possible jump moves
807 1B08 20 18 RFJ LI ISA Active pieces
808 1B0A C4 AS 4 Add byte off-set
809 1B0B 0B LR IS,A Get to byte
810 1B0C 4C LR A,S
811 1B0D F1 NS 1 FF if normal, 1 bit only for conti
812 1B0E 53 LR 3,A 3 used to develop final byte
813 1B0F 28 1A 3A PI FKT Any forward moving pieces?
814 1B12 84 57 BZ RBJ No, look to backward moving
815 1B14 20 2A LI ISE+1 Look to empty squares forward
816 1B16 C4 AS 4 Add byte off-set
817 1B17 0B LR IS,A Destination byte location
818 1B18 4C LR A,S
819 1B19 12 SR 1
820 1B1A F3 NS 3
821 1B1B 53 LR 3,A Only pieces that have place to lan
822 1B1C 20 1C LI ISP Passive pieces
823 1B1E C4 AS 4
824 1B1F 0B LR IS,A
825 1B20 4D LR A,I Look to RF passive pieces forward
826 1B21 15 SL 4 In front of left-most bits
827 1B22 50 LR 0,A
828 1B23 4C LR A,S
829 1B24 14 SR 4 In front of right-most bits
830 1B25 12 SR 1
831 1B26 C0 AS 0
832 1B27 F3 NS 3
833 1B28 53 LR 3,A Pieces that can jump RF
834 1B29 84 0C BZ LFJ None was found
835 1B2B 20 01 LI H'1' The RFJ direction and J indicator
836 1B2D 15 SL 4
837 1B2E 55 LR 5,A
838 1B2F 28 1A 4F PI STMV Store move byte and info
839 1B32 70 CLR
840 1B33 C6 AS 6 Recall indicator
841 1B34 94 2C BNZ LFJ2
842 1B36 20 18 LFJ LI ISA
843 1B38 C4 AS 4 Add byte off-set
844 1B39 0B LR IS,A Get to initial byte
845 1B3A 4C LR A,S
846 1B3B F1 NS 1 FF if normal, 1 bit only for conti
847 1B3C 53 LR 3,A
848 1B3D 28 1A 3A PI FKT
849 1B40 20 2A LI ISE+1 Empty squares forward
850 1B42 C4 AS 4
851 1B43 0B LR IS,A
852 1B44 4C LR A,S
853 1B45 13 SL 1
854 1B46 F3 NS 3
855 1B47 53 LR 3,A Only pieces that have a place to l
856 1B48 20 1C LI ISP
857 1B4A C4 AS 4
858 1B4B 0B LR IS,A
859 1B4C 4D LR A,I
860 1B4D 15 SL 4
861 1B4E 13 SL 1
862 1B4F 50 LR 0,A
863 1B50 4C LR A,S
864 1B51 14 SR 4
865 1B52 C0 AS 0
866 1B53 F3 NS 3
867 1B54 53 LR 3,A Pieces that can jump LF
868 1B55 84 14 BZ RBJ
869 1B57 20 11 LI H'11' The LFJ direction and J indicator
870 1B59 55 LR 5,A
871 1B5A 28 1A 4F PI STMV
872 1B5D 70 CLR
873 1B5E E6 XS 6
874 1B5F 84 0A BZ RBJ
875 1B61 90 33 LFJ2 BR RBJ2
876 1B63 45 RBJ0 LR A,5
877 1B64 25 02 CI H'2' Which direction, 1, 2, or 3?
878 1B66 91 30 BM LBJ It was a 3
879 1B68 94 CD BNZ LFJ It was a 1
880 1B6A 20 18 RBJ LI ISA
881 1B6C C4 AS 4 Add byte off-set
882 1B6D 0B LR IS,A Get to initial byte
883 1B6E 4C LR A,S
884 1B6F F1 NS 1 FF if normal, 1 bit only for conti
885 1B70 53 LR 3,A
886 1B71 28 1A 42 PI BKT Any backward moving pieces?
887 1B74 84 50 BZ FJ1 No
888 1B76 20 28 LI ISE-1 Look to empty squares backward
889 1B78 C4 AS 4
890 1B79 0B LR IS,A
891 1B7A 4C LR A,S
892 1B7B 12 SR 1
893 1B7C F3 NS 3
894 1B7D 53 LR 3,A
895 1B7E 20 1B LI ISP-1 Look to passive pieces backward
896 1B80 C4 AS 4
897 1B81 0B LR IS,A
898 1B82 4D LR A,I
899 1B83 15 SL 4
900 1B84 50 LR 0,A
901 1B85 4C LR A,S
902 1B86 14 SR 4
903 1B87 12 SR 1
904 1B88 C0 AS 0
905 1B89 F3 NS 3
906 1B8A 53 LR 3,A Pieces that can jump RB
907 1B8B 84 0B BZ LBJ
908 1B8D 20 12 LI H'12' The RBJ direction and J indicator
909 1B8F 55 LR 5,A
910 1B90 28 1A 4F PI STMV
911 1B93 70 CLR
912 1B94 E6 XS 6
913 1B95 94 2C RBJ2 BNZ LBJ2
914 1B97 20 18 LBJ LI ISA
915 1B99 C4 AS 4 Add byte off-set
916 1B9A 0B LR IS,A Get to initial byte
917 1B9B 4C LR A,S
918 1B9C F1 NS 1 FF if normal, 1 bit only for conti
919 1B9D 53 LR 3,A
920 1B9E 28 1A 42 PI BKT
921 1BA1 20 28 LI ISE-1 Empty squares backward
922 1BA3 C4 AS 4
923 1BA4 0B LR IS,A
924 1BA5 4C LR A,S
925 1BA6 13 SL 1
926 1BA7 F3 NS 3
927 1BA8 53 LR 3,A
928 1BA9 20 1B LI ISP-1 Look to passive pieces backward
929 1BAB C4 AS 4
930 1BAC 0B LR IS,A
931 1BAD 4D LR A,I
932 1BAE 15 SL 4
933 1BAF 13 SL 1
934 1BB0 50 LR 0,A
935 1BB1 4C LR A,S
936 1BB2 14 SR 4
937 1BB3 C0 AS 0
938 1BB4 F3 NS 3
939 1BB5 53 LR 3,A Pieces that can jump LB
940 1BB6 84 0E BZ FJ1
941 1BB8 20 13 LI H'13' The RBJ direction and J indicator
942 1BBA 55 LR 5,A
943 1BBB 28 1A 4F PI STMV
944 1BBE 70 CLR
945 1BBF E6 XS 6
946 1BC0 84 0D BZ FJ2 We want them all
947 1BC2 29 17 90 LBJ2 JMP SELE A successful NEXT
948 1BC5 70 FJ1 CLR No backward moves
949 1BC6 E6 XS 6
950 1BC7 84 06 BZ FJ2 We want them all
951 1BC9 81 09 BP FJ3 Try next byte
952 1BCB 29 1D 31 JMP AFT A NEXT continuation failure
953 1BCE 41 FJ2 LR A,1 Was it a first continuation try?
954 1BCF 25 FF CI H'FF'
**OPERATOR SYNTAX LINE # 955
955
956 1BD1 94 0B BNZ FJ4 Yes
957 1BD3 44 FJ3 LR A,4 No, to next board byte
958 1BD4 1F INC
959 1BD5 21 03 NI H'3'
960 1BD7 54 LR 4,A
961 1BD8 84 4D BZ FJ9 There are no more
962 1BDA 29 1B 08 JMP RFJ Go round again for next byte
963 1BDD 70 FJ4 CLR A first continuation try
964 1BDE E2 XS 2 Was it successful?
965 1BDF 84 11 BZ FJ5 No
966 * Successful continuation try
967 1BE1 4B LR A,HL
968 1BE2 14 SR 4
969 1BE3 25 05 CI H'5' Where are we?
970 1BE5 91 1C BM FJ7 Could be a second continuation
971 1BE7 25 01 CI H'1' A player's board
**OPERATOR SYNTAX LINE # 972
972
973 1BE9 94 47 BNZ FJ10 No
974 1BEB 28 13 13 PI BORD Show board
975 1BEE 29 12 0E JMP DJMP
976 * Unsuccessful continuation try
977 1BF1 4B FJ5 LR A,HL
978 1BF2 14 SR 4
979 1BF3 25 01 CI H'1' A player's board
980 1BF5 91 04 BM FJ6 No
981 1BF7 29 19 97 JMP FOR5 "MY MOVE" etc
982 1BFA 71 FJ6 LIS H'1' Back 2 levels
983 1BFB 18 COM
984 1BFC 15 SL 4
985 1BFD CB AS HL
986 1BFE 5B LR HL,A
987 1BFF 29 18 F1 JMP FORE
988 1C02 10 FJ7 LR DC,H
989 1C03 70 LIS H'DE' Back 3 levels at ACTM
990 1C04 8E ADC
991 1C05 70 CLR
992 1C06 8C XM A previous continuation?
993 1C07 81 29 BP FJ10 No
994 1C09 16 LM were there more than 2 moves?
995 1C0A 25 01 CI H'1'
996 1C0C 91 11 BM FJ8 Yes so save this one here
997 1C0E 10 LR DC,H No, so we can move data
998 1C0F 2C XDC back by 2 levels
999 1C10 71 LIS H'1' and so save space
1000 1C11 18 COM A fast -2
1001 1C12 15 SL 4
1002 1C13 CB AS HL
1003 1C14 5B LR HL,A
1004 1C15 10 LR DC,H
1005 1C16 62 LISU 2
1006 1C17 68 LISL 0
1007 1C18 72 LIS H'2'
1008 1C19 15 SL 4
1009 1C1A 5C LR S,A
1010 1C1B 28 43 CD PI TRAN
1011 1C1E 4B FJ8 LR A,HL
1012 1C1F 14 SR 4
1013 1C20 25 0E CI H'E' Are we out of space?
1014 1C22 84 32 BZ FJ12 Yes
1015 1C24 90 1C BR FJ11
1016 * All bytes exhausted
1017 1C26 70 FJ9 CLR
1018 1C27 E2 XS 2
1019 1C28 94 08 BNZ FJ10 Jumps found
1020 1C2A 70 CLR
1021 1C2B E6 XS 6 Go to normal moves?
1022 1C2C 84 31 BZ RFN Yes
1023 1C2E 29 1D 31 JMP AFT No more jumps
1024 1C31 4B FJ10 LR A,HL
1025 1C32 14 SR 4
1026 1C33 25 0E CI H'E'
1027 1C35 91 1F BM FJ12 Too bad, out of space
1028 1C37 25 01 CI H'1'
1029 1C39 94 07 BNZ FJ11 Not player's FIND
1030 1C3B 28 13 13 PI BORD Show board with piece moved
1031 1C3E 29 10 F5 JMP PMOV Init cursor and say "MUST JUMP"
1032 1C41 24 FE FJ11 AI -H'2'
1033 1C43 2A 0F B0 DCI MOBS
1034 1C46 8E ADC
1035 1C47 42 LR A,2
1036 1C48 17 ST
1037 1C49 10 LR DC,H Prepare for continuation
1038 1C4A 20 1E LI H'1E' To ACTM in passed board
1039 1C4C 8E ADC These data are over-
1040 1C4D 70 CLR written if no continuation
1041 1C4E 18 COM A -1 signals
1042 1C4F 17 ST a continuation
1043 1C50 42 LR A,2 A 1 here signals
1044 1C51 17 ST a single jump case
1045 1C52 29 17 90 JMP SELE
1046 1C55 64 FJ12 LISU KLOC Correct PASM and stop
1047 1C56 6F LISL H'7'
1048 1C57 71 LIS H'1' Allow for a piece capture
1049 1C58 18 COM A fast -2
1050 1C59 CC AS S
1051 1C5A 5C LR S,A
1052 1C5B 29 1E 17 JMP EVAL
1053 * RFN LFN RBN LBN NORF NORT
1054 1C5E 20 18 RFN LI ISA
1055 1C60 C4 AS 4 Add byte off-set
1056 1C61 0B LR IS,A Get to initial byte
1057 1C62 4C LR A,S
1058 1C63 53 LR 3,A
1059 1C64 28 1A 3A PI FKT
1060 1C67 84 49 BZ RBN
1061 1C69 20 29 LI ISE Start of empty region
1062 1C6B C4 AS 4 Add off-set
1063 1C6C 0B LR IS,A
1064 1C6D 4D LR A,I Look to RF empty squares
1065 1C6E 15 SL 4
1066 1C6F 50 LR 0,A
1067 1C70 4C LR A,S
1068 1C71 14 SR 4
1069 1C72 12 SR 1
1070 1C73 C0 AS 0
1071 1C74 F3 NS 3
1072 1C75 53 LR 3,A Pieces that can move RF
1073 1C76 84 0D BZ LFN
1074 1C78 70 CLR
1075 1C79 55 LR 5,A
1076 1C7A 28 1A 4F PI STMV
1077 1C7D 70 CLR
1078 1C7E E6 XS 6
1079 1C7F 84 04 BZ LFN
1080 1C81 29 17 90 JMP SELE
1081 1C84 20 18 LFN LI ISA
1082 1C86 C4 AS 4 Add byte off-set
1083 1C87 0B LR IS,A Get to initial byte
1084 1C88 4C LR A,S
1085 1C89 53 LR 3,A
1086 1C8A 28 1A 3A PI FKT
1087 1C8D 84 23 BZ RBN
1088 1C8F 20 29 LI ISE Start of empty region
1089 1C91 C4 AS 4 Add off-set
1090 1C92 0B LR IS,A
1091 1C93 4D LR A,I Look to LF empty squares
1092 1C94 15 SL 4
1093 1C95 13 SL 1
1094 1C96 50 LR 0,A
1095 1C97 4C LR A,S
1096 1C98 14 SR 4
1097 1C99 C0 AS 0
1098 1C9A F3 NS 3
1099 1C9B 53 LR 3,A Pieces that can move LF
1100 1C9C 84 14 BZ RBN
1101 1C9E 71 LIS H'1'
1102 1C9F 55 LR 5,A
1103 1CA0 28 1A 4F PI STMV
1104 1CA3 70 CLR
1105 1CA4 E6 XS 6
1106 1CA5 84 0B BZ RBN
1107 1CA7 29 17 90 JMP SELE
1108 1CAA 45 RBN0 LR A,5
1109 1CAB 25 02 CI H'2' Which direction 1, 2 or 3?
1110 1CAD 91 26 BM LBN It was a 3
1111 1CAF 94 D4 BNZ LFN It was a 1
1112 1CB1 20 18 RBN LI ISA
1113 1CB3 C4 AS 4 Add byte off-set
1114 1CB4 0B LR IS,A Get to initial byte
1115 1CB5 4C LR A,S
1116 1CB6 53 LR 3,A
1117 1CB7 28 1A 42 PI BKT
1118 1CBA 84 3F BZ NORT
1119 1CBC 20 28 LI ISE-1
1120 1CBE C4 AS 4 Add off-set
1121 1CBF 0B LR IS,A
1122 1CC0 4D LR A,I Look to RB empty squares
1123 1CC1 15 SL 4
1124 1CC2 50 LR 0,A
1125 1CC3 4C LR A,S
1126 1CC4 14 SR 4
1127 1CC5 12 SR 1
1128 1CC6 C0 AS 0
1129 1CC7 F3 NS 3
1130 1CC8 53 LR 3,A Pieces that can move RB
1131 1CC9 84 0A BZ LBN None can
1132 1CCB 72 LIS H'2'
1133 1CCC 55 LR 5,A
1134 1CCD 28 1A 4F PI STMV
1135 1CD0 70 CLR
1136 1CD1 E6 XS 6
1137 1CD2 94 24 BNZ NORF
1138 1CD4 20 18 LBN LI ISA
1139 1CD6 C4 AS 4 Add byte off-set
1140 1CD7 0B LR IS,A Get to initial byte
1141 1CD8 4C LR A,S
1142 1CD9 53 LR 3,A
1143 1CDA 28 1A 42 PI BKT
1144 1CDD 84 1C BZ NORT
1145 1CDF 20 28 LI ISE-1
1146 1CE1 C4 AS 4 Add off-set
1147 1CE2 0B LR IS,A
1148 1CE3 4D LR A,I Look to LB empty squares
1149 1CE4 15 SL 4
1150 1CE5 13 SL 1
1151 1CE6 50 LR 0,A
1152 1CE7 4C LR A,S
1153 1CE8 14 SR 4
1154 1CE9 C0 AS 0
1155 1CEA F3 NS 3
1156 1CEB 53 LR 3,A Pieces that can move LB
1157 1CEC 84 0D BZ NORT
1158 1CEE 73 LIS H'3'
1159 1CEF 55 LR 5,A
1160 1CF0 28 1A 4F PI STMV
1161 1CF3 70 CLR
1162 1CF4 E6 XS 6
1163 1CF5 84 04 BZ NORT
1164 1CF7 29 17 90 NORF JMP SELE
1165 *We get here if we want to compute mobility and also if no moves f
1166 1CFA 44 NORT LR A,4
1167 1CFB 1F INC
1168 1CFC 21 03 NI H'3'
1169 1CFE 54 LR 4,A
1170 1CFF 84 04 BZ NOR0
1171 1D01 29 1C 5E JMP RFN Go round again for next byte
1172 1D04 70 NOR0 CLR
1173 1D05 E2 XS 2 Get mobility count
1174 1D06 84 2A BZ AFT No moves found
1175 1D08 4B NOR1 LR A,HL Where are we?
1176 1D09 14 SR 4 Get Ply number
1177 1D0A 25 01 CI H'1'
1178 1D0C 94 07 BNZ NOR2 Checking for possible player's mov
1179 1D0E 28 13 13 PI BORD Put up board for player
1180 1D11 29 10 F5 JMP PMOV Yes, so let him move
1181 1D14 25 0E NOR2 CI H'E' Are we out of space?
1182 1D16 84 17 BZ NOR4 Yes
1183 1D18 24 FE AI -H'2' To index MOBS
1184 1D1A 50 LR 0,A
1185 1D1B 2A 0C 28 DCI PLY0 Neg. of allowed MOB sum
1186 1D1E 16 LM
1187 1D1F 2A 0F B0 DCI MOBS
1188 1D22 88 NOR3 AM Add up mobilities
1189 1D23 30 DS 0
1190 1D24 94 FD BNZ NOR3
1191 1D26 C2 AS 2 Add in the current one
1192 1D27 81 06 BP NOR4 Time to stop
1193 1D29 42 LR A,2
1194 1D2A 17 ST Save latest mobility
1195 1D2B 29 17 90 JMP SELE and go on
1196 1D2E 29 1E 17 NOR4 JMP EVAL Evaluate
1197 * AFT
1198 *MAT EQU H'0' Register used for Material Adv. t
1199 *POT EQU H'6' Register used for Positional Adv.
1200 *Defined earlier
1201 HLS EQU H'4' Register to save HL off-set
1202 *No more moves found so time to back up
1203 1D31 4B AFT LR A,HL Prepare to back up
1204 1D32 14 SR 4
1205 1D33 25 02 CI H'2'
1206 1D35 94 12 BNZ AFT0 Not at end of tree search
1207 *Prepare for verification of player's reply
1208 1D37 29 1F 4D JMP STOP
1209 1D3A 71 AFTT LIS H'1' Back to player's board
1210 1D3B 15 SL 4
1211 1D3C 5B LR HL,A
1212 1D3D 47 LR A,7
1213 1D3E 18 COM Reverse sides
1214 1D3F 57 LR 7,A
1215 1D40 2A 0E D0 DCI PLMV This space is also used by TREE ro
1216 1D43 70 CLR Clear first byte
1217 1D44 17 ST
1218 1D45 29 1A EB JMP FIND Get verification info for move
1219 1D48 24 FE AFT0 AI -H'2' SCOR not saved for HL=10
1220 1D4A 13 SL 1 2 bytes per entry
1221 1D4B 2A 0E F0 DCI SCOR
1222 1D4E 8E ADC
1223 1D4F 0E LR Q,DC
1224 1D50 16 LM
1225 1D51 50 LR MAT,A The current material advantage t
1226 1D52 16 LM
1227 1D53 56 LR POT,A The current positional term
1228 1D54 4B AFTE LR A,HL
1229 1D55 25 30 CI H'30'
1230 1D57 94 0A BNZ AFT1 Must test for double jump and cont
1231 1D59 2A 0E F0 DCI SCOR
1232 1D5C 0E LR Q,DC
1233 1D5D 72 LIS H'2'
1234 1D5E 51 LR 1,A So board can be saved if indicated
1235 1D5F 29 1D BB JMP AP2X Can handle with -2 passed case
1236 1D62 10 AFT1 LR DC,H EVAL enters here
1237 1D63 71 LIS H'1' Neg. ACTM for passed board
1238 1D64 18 COM Fast -2
1239 1D65 8E ADC
1240 1D66 70 CLR
1241 1D67 8C XM Is -1 board passed
1242 1D68 91 17 BM AFP1 Yes
1243 1D6A 20 EF LI H'EF' Is -2 board passed
1244 1D6C 8E ADC
1245 1D6D 70 CLR
1246 1D6E 8C XM
1247 1D6F 91 2B BM AFP2 Yes
1248 * -1 and -2 boards not passed
1249 1D71 4B LR A,HL
1250 1D72 14 SR 4
1251 1D73 24 FE AI -H'2'
1252 1D75 51 LR 1,A Back 2 from current HL
1253 1D76 24 FE AI -H'2'
1254 1D78 13 SL 1
1255 1D79 2A 0E F0 DCI SCOR
1256 1D7C 8E ADC
1257 1D7D 0E LR Q,DC
1258 1D7E 90 24 BR AP2Y General routine can now handle
1259 * -1 board is passed so this was a multiple jump
1260 1D80 28 1D FC AFP1 PI AFBX
1261 1D83 71 LIS H'1'
1262 1D84 C1 AS 1
1263 1D85 51 LR 1,A
1264 1D86 72 LIS H'2'
1265 1D87 8E ADC
1266 1D88 0E LR Q,DC
1267 1D89 40 LR A,MAT
1268 1D8A 8D CM
1269 1D8B 91 07 BM AP12 Back score for sure
1270 1D8D 94 0A BNZ AP13 Do not back score
1271 1D8F 46 LR A,POT
1272 1D90 8D CM
1273 1D91 81 06 BP AP13 Do not back
1274 1D93 0F AP12 LR DC,Q Back score here
1275 1D94 40 LR A,MAT
1276 1D95 17 ST
1277 1D96 46 LR A,POT
1278 1D97 17 ST
1279 1D98 29 1D E5 AP13 JMP AF2B Back H by 2
1280 * -2 board is passed so backing into a continuation
1281 1D9B 28 1D FC AFP2 PI AFBX
1282 1D9E 41 LR A,1
1283 1D9F 25 01 CI H'1'
1284 1DA1 84 11 BZ AP22 Can't prune and may need to save b
1285 * Will handle normal both normal and backing into continuation cas
1286 1DA3 40 AP2Y LR A,MAT
1287 1DA4 8D CM
1288 1DA5 91 0D BM AP22 Can't prune
1289 1DA7 94 05 BNZ AP21 Can prune
1290 1DA9 46 LR A,POT
1291 1DAA 8D CM
1292 1DAB 91 07 BM AP22 Can't prune
1293 1DAD 41 AP21 LR A,1 Prune around multiple jump
1294 1DAE 15 SL 4
1295 1DAF 5B LR HL,A
1296 1DB0 29 1D F0 JMP ABBB Prepare for SELE
1297 1DB3 20 02 AP22 LI H'2' Forward 1 level
1298 1DB5 0F LR DC,Q
1299 1DB6 8E ADC
1300 1DB7 0E LR Q,DC We may need to save score
1301 1DB8 41 LR A,1
1302 1DB9 1F INC Keep HL value in step
1303 1DBA 51 LR 1,A
1304 1DBB 46 AP2X LR A,POT
1305 1DBC 18 COM
1306 1DBD 1F INC
1307 1DBE 56 LR POT,A
1308 1DBF 40 LR A,MAT
1309 1DC0 18 COM
1310 1DC1 1F INC
1311 1DC2 50 LR MAT,A
1312 1DC3 8D CM
1313 1DC4 91 07 BM AP23 Can back score
1314 1DC6 94 22 BNZ AF1B Can't back score
1315 1DC8 46 LR A,POT
1316 1DC9 8D CM
1317 1DCA 81 1E BP AF1B Can't back score
1318 1DCC 0F AP23 LR DC,Q Back score
1319 1DCD 40 LR A,MAT
1320 1DCE 17 ST
1321 1DCF 46 LR A,POT
1322 1DD0 17 ST
1323 1DD1 41 LR A,1 Should the board be saved?
1324 1DD2 25 02 CI H'2'
1325 1DD4 94 14 BNZ AF1B No, back 1 level in HL
1326 1DD6 10 LR DC,H Yes
1327 1DD7 2C XDC
1328 1DD8 2A 0E 10 DCI TREE
1329 1DDB 62 LISU 2
1330 1DDC 68 LISL 0
1331 1DDD 71 LIS H'1'
1332 1DDE 15 SL 4 Fast H'10'
1333 1DDF 5C LR S,A
1334 1DE0 28 43 CD PI TRAN Save board
1335 1DE3 90 05 BR AF1B and back 1 level
1336 * Final backing up
1337 1DE5 7E AF2B LIS H'E' Back 2 levels
1338 1DE6 15 SL 4 Fast H'E0'
1339 1DE7 90 06 BR AFBB
1340 1DE9 47 AF1B LR A,7 Reverse sides and back 1 level
1341 1DEA 18 COM
1342 1DEB 57 LR 7,A
1343 1DEC 7F LIS H'F' Back 1 level
1344 1DED 15 SL 4 Fast H'F0'
1345 1DEE CB AFBB AS HL
1346 1DEF 5B LR HL,A
1347 1DF0 10 ABBB LR DC,H
1348 1DF1 28 1A 0D PI RASC
1349 1DF4 2A 0C 2F DCI CFLG
1350 1DF7 70 CLR
1351 1DF8 17 ST Clear compacting flag
1352 1DF9 29 17 90 JMP SELE
1353 * Subroutine to back by 2's to non-passed board
1354 1DFC 08 AFBX LR K,P
1355 1DFD 20 FF LI -H'1'
1356 1DFF 8E ADC To ACTM location
1357 1E00 0E LR Q,DC
1358 1E01 0F AFB2 LR DC,Q
1359 1E02 71 LIS H'1'
1360 1E03 18 COM
1361 1E04 15 SL 4 Back by H'20'
1362 1E05 8E ADC
1363 1E06 0E LR Q,DC
1364 1E07 70 CLR
1365 1E08 8C XM
1366 1E09 91 F7 BM AFB2 Go around again
1367 1E0B 03 LR A,QL
1368 1E0C 14 SR 4
1369 1E0D 51 LR 1,A Save to get new HL value
1370 1E0E 24 FE AI -H'2'
1371 1E10 13 SL 1 2 bytes per entry, remember
1372 1E11 2A 0E F0 DCI SCOR
1373 1E14 8E ADC
1374 1E15 0E LR Q,DC Q points back 2 from first passed
1375 1E16 0C PK
1376 * EVAL
1377 * HLS used temporarily in multiply routine
1378 1E17 64 EVAL LISU 4 Compute the material advantage t
1379 1E18 6E LISL 6 Get to ACTM
1380 1E19 4D LR A,I
1381 1E1A 50 LR MAT,A ACTM
1382 1E1B 4D LR A,I
1383 1E1C 54 LR HLS,A PASM
1384 1E1D 18 COM
1385 1E1E 1F INC
1386 1E1F C0 AS MAT
1387 1E20 53 LR 3,A ACTM-PASM
1388 1E21 81 03 BP EVA0
1389 1E23 18 COM
1390 1E24 1F INC
1391 1E25 51 EVA0 LR 1,A |A-P|
1392 1E26 40 LR A,MAT
1393 1E27 C4 AS HLS A+P
1394 1E28 18 COM
1395 1E29 1F INC -(A+P)
1396 1E2A 2A 0C 2C DCI AP20
1397 1E2D 88 AM Add initial value +6
1398 1E2E 12 SR 1 and divide by 2
1399 1E2F 54 LR HLS,A Save temporarily, multiply by
1400 1E30 70 CLR by smaller pos. # in 1
1401 1E31 50 LR MAT,A Product into MAT
1402 1E32 41 LR A,1
1403 1E33 21 01 EVA1 NI H'1' Is the rightmost bit a 1?
1404 1E35 84 04 BZ EVA2 No
1405 1E37 44 LR A,HLS
1406 1E38 C0 AS MAT
1407 1E39 50 LR MAT,A
1408 1E3A 44 EVA2 LR A,HLS
1409 1E3B 13 SL 1
1410 1E3C 54 LR HLS,A
1411 1E3D 41 LR A,1
1412 1E3E 12 SR 1
1413 1E3F 51 LR 1,A
1414 1E40 94 F2 BNZ EVA1 Product is not complete
1415 1E42 40 LR A,MAT
1416 1E43 25 33 CI H'33' Maximum of 51
1417 1E45 81 04 BP EV21
1418 1E47 20 33 LI H'33' Limit range to avoid CM trouuble
1419 1E49 50 LR MAT,A
1420 1E4A 70 EV21 CLR
1421 1E4B E3 XS 3 To get sign
1422 1E4C 40 LR A,MAT
1423 1E4D 81 74 BP EVA3
1424 1E4F 18 COM
1425 1E50 1F INC
1426 1E51 50 LR MAT,A Material advantage with sign
1427 * Compute guard row credit
1428 1E52 63 LISU PLOC
1429 1E53 70 CLR
1430 1E54 53 LR 3,A
1431 1E55 E7 XS 7
1432 1E56 84 1C BZ EVG2 Black is active
1433 1E58 6C LISL 4 Passive's (black's) guard byte
1434 1E59 7A LIS H'A'
1435 1E5A 15 SL 4 Passive's guard bits
1436 1E5B FC NS S Are pieces there?
1437 1E5C 51 LR 1,A
1438 1E5D 24 FF AI H'FF'
1439 1E5F F1 NS 1 Both of them?
1440 1E60 84 04 BZ EVG1 No
1441 1E62 70 CLR
1442 1E63 18 COM Debit
1443 1E64 53 LR 3,A
1444 1E65 6B EVG1 LISL 3 Active's (red's) guard byte
1445 1E66 75 LIS H'5' Active's guard bits
1446 1E67 FC NS S Are pieces there?
1447 1E68 51 LR 1,A
1448 1E69 24 FF AI H'FF'
1449 1E6B F1 NS 1 Both of them?
1450 1E6C 84 1F BZ EVG4 No
1451 1E6E 43 LR A,3
1452 1E6F 1F INC
1453 1E70 53 LR 3,A Credit
1454 1E71 90 1A BR EVG4
1455 1E73 6F EVG2 LISL 7 Passive's (red's) guard byte
1456 1E74 75 LIS H'5'
1457 1E75 FC NS S Are pieces there?
1458 1E76 51 LR 1,A
1459 1E77 24 FF AI H'FF'
1460 1E79 F1 NS 1 Both of them?
1461 1E7A 84 04 BZ EVG3 No
1462 1E7C 70 CLR
1463 1E7D 18 COM Debit
1464 1E7E 53 LR 3,A
1465 1E7F 68 EVG3 LISL 0 Active's (black's) guard byte
1466 1E80 7A LIS H'A'
1467 1E81 14 SR 4 Active's guard bits
1468 1E82 FC NS S Are pieces there?
1469 1E83 51 LR 1,A
1470 1E84 24 FF AI H'FF'
1471 1E86 F1 NS 1 Both of them?
1472 1E87 84 04 BZ EVG4 No
1473 1E89 43 LR A,3
1474 1E8A 1F INC Credit
1475 1E8B 53 LR 3,A
1476 1E8C 43 EVG4 LR A,3
1477 1E8D 13 SL 1 Credit of 2, 0 or -2
1478 1E8E C0 AS MAT Add to MAT
1479 1E8F 50 LR MAT,A
1480 * Center credit
1481 1E90 70 CLR
1482 1E91 53 LR 3,A
1483 1E92 6D LISL 5 Start with passive
1484 1E93 20 66 EVD0 LI H'66' These squares
1485 1E95 FD NS I Are they occupied?
1486 1E96 84 0E BZ EVD2 No
1487 1E98 51 EVD1 LR 1,A Count them
1488 1E99 33 DS 3
1489 1E9A 70 CLR
1490 1E9B 18 COM
1491 1E9C C1 AS 1
1492 1E9D F1 NS 1
1493 1E9E 94 F9 BNZ EVD1
1494 1EA0 0A LR A,IS
1495 1EA1 21 01 NI H'1' Can we consider next byte?
1496 1EA3 84 EF BZ EVD0 Yes
1497 1EA5 43 EVD2 LR A,3
1498 1EA6 C0 AS MAT Debit for passive occupancy
1499 1EA7 50 LR MAT,A
1500 1EA8 70 CLR
1501 1EA9 53 LR 3,A
1502 1EAA 69 LISL 1 Now for active's bytes
1503 1EAB 20 66 EVD3 LI H'66' These squares
1504 1EAD FD NS I Are they occupied?
1505 1EAE 84 09 BZ EVD6 No
1506 1EB0 51 EVD5 LR 1,A Count them
1507 1EB1 33 DS 3
1508 1EB2 70 CLR
1509 1EB3 18 COM
1510 1EB4 C1 AS 1
1511 1EB5 F1 NS 1
1512 1EB6 94 F9 BNZ EVD5
1513 1EB8 0A EVD6 LR A,IS
1514 1EB9 21 01 NI H'1' Can we consider the next byte?
1515 1EBB 84 EF BZ EVD3 Yes
1516 1EBD 43 EVD8 LR A,3
1517 1EBE 18 COM
1518 1EBF 1F INC Credit for active occupancy
1519 1EC0 C0 AS MAT
1520 1EC1 50 LR MAT,A
1521 * Now the second SCOR term
1522 1EC2 4B EVA3 LR A,HL
1523 1EC3 14 SR 4
1524 1EC4 24 FE AI -H'2'
1525 1EC6 55 LR 5,A Save PLY
1526 1EC7 2A 0F B0 DCI MOBS Compute mobility term
1527 1ECA 24 FF AI -H'1'
1528 1ECC 8E ADC
1529 1ECD 16 LM Get earlier mobility
1530 1ECE 18 COM
1531 1ECF 1F INC
1532 1ED0 C2 AS 2 Add current mobility
1533 1ED1 25 0C CI H'C' Difference limited to |12|
1534 1ED3 81 02 BP EVA4
1535 1ED5 7C LIS H'C'
1536 1ED6 25 F4 EVA4 CI -H'C'
1537 1ED8 91 03 BM EVA5
1538 1EDA 20 F4 LI -H'C'
1539 1EDC 13 EVA5 SL 1 Make room for ply term
1540 1EDD 13 SL 1 Would like to shift more
1541 1EDE 56 LR POT,A Save difference (and free 2)
1542 1EDF 70 CLR
1543 1EE0 C0 AS MAT
1544 1EE1 94 03 BNZ EVA6
1545 1EE3 70 CLR
1546 1EE4 C6 AS POT
1547 1EE5 45 EVA6 LR A,5 Get ply value
1548 1EE6 91 07 BM EVA7 Test sign of significant term
1549 1EE8 18 COM If pos. we add H'C'-PLY
1550 1EE9 1F INC
1551 1EEA 24 0C AI H'C'
1552 1EEC 90 03 BR EVA8
1553 1EEE 24 F4 EVA7 AI -H'C' If neg. we add PLY-H'C'
1554 1EF0 C6 EVA8 AS POT Add it in
1555 1EF1 56 LR POT,A Positional term with PLY
1556 1EF2 4B EVA9 LR A,HL
1557 1EF3 14 SR 4
1558 1EF4 24 FE AI -H'2'
1559 1EF6 13 SL 1
1560 1EF7 2A 0E F0 DCI SCOR
1561 1EFA 8E ADC
1562 1EFB 0E LR Q,DC
1563 1EFC 29 1D 54 JMP AFTE AFT routine handles from here on
1564 * EMPT WAST BRAK STOP
1565 1EFF 08 EMPT LR K,P Empty squares in O'51' thru O'54'
1566 1F00 65 LISU ELOC with guard bytes in 50 and 55
1567 1F01 68 LISL 0
1568 1F02 70 CLR
1569 1F03 5C LR S,A Make sure guard byte is empty
1570 1F04 63 LISU PLOC Start with ACTIVE
1571 1F05 74 LIS H'4'
1572 1F06 50 LR 0,A
1573 1F07 90 05 BR EMP3
1574 1F09 0A EMP2 LR A,IS
1575 1F0A 24 30 AI H'30' Actually subtracting 16
1576 1F0C 0B LR IS,A
1577 1F0D 4C EMP3 LR A,S
1578 1F0E 51 LR 1,A
1579 1F0F 0A LR A,IS
1580 1F10 24 04 AI 4
1581 1F12 0B LR IS,A
1582 1F13 4C LR A,S
1583 1F14 C1 AS 1
1584 1F15 51 LR 1,A
1585 1F16 0A LR A,IS
1586 1F17 24 0D AI H'D' Add 13 get to the correct EMPTY lo
1587 1F19 0B LR IS,A
1588 1F1A 41 LR A,1
1589 1F1B 18 COM Reverse 1's and 0's
1590 1F1C 5C LR S,A
1591 1F1D 30 DS 0
1592 1F1E 94 EA BNZ EMP2
1593 1F20 4D LR A,I To index only
1594 1F21 70 CLR
1595 1F22 5C LR S,A Upper guard byte
1596 1F23 0C PK
1597 *-*-*-*-*-*-*-*-*-*
1598 *First replies (maximum of 4 each)
1599 1F24 33 BOK2 DC H'33' 24,20 24-20 To 12-16
1600 1F25 33 DC H'33' 24-20, 24-20
1601 1F26 43 DC H'43' 23-19, 24-20 To 11-15
1602 1F27 20 DC H'20' 22-17, 24-19
1603 1F28 22 DC H'22' 22-17, 22-17 To 10-14
1604 1F29 22 DC H'22' 22-17, 22-17
1605 1F2A 55 DC H'55' 22-18, 22-18 To 9-13
1606 1F2B 55 DC H'55' 22-18, 22-18
1607 1F2C 31 DC H'31' 24-20, 23-18 To 11-16
1608 1F2D 45 DC H'45' 24-19, 22-18
1609 1F2E 66 DC H'66' 21-17, 21-17 To 10-15
1610 1F2F 66 DC H'66' 21-17, 21-17
1611 1F30 55 DC H'55' 22-18, 22-18 To 9-14
1612 1F31 55 DC H'55' 22-18, 22-18
1613 *-*-*-
1614 1F32 08 WAST LR K,P Delay loop to WASTE some time
1615 1F33 7F WAS2 LIS H'F'
1616 1F34 51 LR 1,A
1617 1F35 70 WAS3 CLR
1618 1F36 52 LR 2,A
1619 1F37 32 WAS4 DS 2
1620 1F38 94 FE BNZ WAS4
1621 1F3A 31 DS 1
1622 1F3B 94 F9 BNZ WAS3
1623 1F3D 0C PK
1624 *
1625 1F3E 4B BRAK LR A,HL
1626 1F3F 14 SR 4
1627 1F40 2A 0C 2B DCI H'0C2B'
1628 1F43 8D CM
1629 1F44 84 04 BZ BRA2
1630 1F46 29 17 90 JMP SELE
1631 1F49 2B BRA2 NOP
1632 1F4A 2B NOP
1633 1F4B 2B NOP
1634 1F4C 2B NOP
1635 1F4D 2A 0E F0 STOP DCI SCOR What kind of score?
1636 1F50 16 LM
1637 1F51 25 3F CI H'3F' Does the machine have a win?
1638 1F53 94 08 BNZ STO1 No
1639 1F55 16 LM Yes, at what ply?
1640 1F56 18 COM
1641 1F57 1F INC
1642 1F58 52 LR 2,A
1643 1F59 77 LIS H'7' "I can win in "
1644 1F5A 90 08 BR STO2
1645 1F5C 25 C1 STO1 CI H'C1' Does player have a win?
1646 1F5E 94 2B BNZ STO4 No
1647 1F60 16 LM Yes, at what ply?
1648 1F61 52 LR 2,A
1649 1F62 78 LIS H'8' "You can win in "
1650 1F63 50 STO2 LR 0,A
1651 1F64 28 12 2B PI WMC Write message
1652 1F67 28 16 79 PI DAI Disable interruupts
1653 1F6A 28 16 34 PI MWAD Wait then update
1654 1F6D 42 LR A,2
1655 1F6E 24 3F AI H'3F'
1656 1F70 58 LR TEMP,A
1657 1F71 28 41 05 PI WDG Report ply
1658 1F74 28 16 34 PI MWAD Wait then update
1659 1F77 28 16 5C PI ENIN Enable interrupts
1660 1F7A 70 CLR
1661 1F7B 53 LR 3,A
1662 1F7C 28 1F 32 STO3 PI WAST Leave message up awhile
1663 1F7F 33 DS 3
1664 1F80 94 FB BNZ STO3
1665 1F82 42 LR A,2
1666 1F83 25 02 CI H'2' Early warning only?
1667 1F85 91 04 BM STO4 Yes
1668 1F87 29 40 00 JMP H'4000' Stop
1669 1F8A 29 1D 3A STO4 JMP AFTT Continue play
1670 1F8D 00 DC 0
1671 1F8E 00 DC 0
1672 1F8F 00 DC 0
1673 1F90 00 DC 0
END
NUMBER OF ERRORS= 3
1
J =0009 VY =0004 VX =0003 HU =000A HL =000B Y =0002
X =0001 ISA =0018 MWAD =1634 BRAK 1F3E EVAL 1E17 HSAL =0C27
TRAN =43CD UDAT =424D HSAV =0C26 EVA0 1E25 EVA1 1E33 EVA2 1E3A
BRA2 1F49 EVA3 1EC2 EVA4 1ED6 EVA5 1EDC EVA6 1EE5 EVA7 1EEE
EVA8 1EF0 EVA9 1EF2 AFBB 1DEE ABBB 1DF0 MOBS =0FB0 AFBX 1DFC
AFB2 1E01 WMC =122B TXC =0FE8 SHCB =0FE2 REDM 1A08 EVD0 1E93
EVD1 1E98 EVD2 1EA5 EVD3 1EAB EVD5 1EB0 EVD6 1EB8 EVD8 1EBD
ISE =0029 TREE =0E10 CLER =4762 ISE0 =0028 TRE2 =0E20 TRE3 =0E30
TRE5 =0E50 WDG =4105 EVG1 1E65 EVG2 1E73 EVG3 1E7F EVG4 1E8C
DAI =1679 UPI =0FFA ENIN =165C ULIN =00F5 WAIT =4501 LFJ 1B36
LBJ 1B97 RBJ 1B6A RFJ 1B08 OBJ0 =0C30 NEJ0 1AE8 RBJ0 1B63
OBJ1 =0F10 LFJ2 1B61 LBJ2 1BC2 RBJ2 1B95 ISK =0020 BOK2 1F24
SHL =27C6 YOLD =0C2E XOLD =0C2D DELE 17BC SELE 1790 CFLG =0C2F
BFLG =0C20 INLH 17D2 WTLN =0FE5 YBLN =0C23 XBLN =0C22 SELX =0C2A
COL0 =0C29 DEL2 17CC INL2 17DA SEL2 179C INL3 17DF SEL3 17A9
SEL4 17B2 COM =08F7 JUMA 1820 JUMB 1821 JUMC 183B PLMD =0E5B
BCMD =006D TCMD =0044 PLMF =0EE0 DJMP =120E JUMP 17F7 TEMP =0008
PLMV =0ED0 BKMV =0C25 STMV 1A4F STM0 1A59 JUM1 180C STM1 1A60
JUM2 182D STM2 1A7D JUM3 182E STM3 1A6E JUM4 1848 NOM4 18D9
STM4 1A75 JUM5 184D NOM5 18DE STM5 1A80 JUM6 1854 NOM6 18E3
JUM7 1863 JUM9 1867 LFN 1C84 LBN 1CD4 RBN 1CB1 RFN 1C5E
DBNC =0FEB FIND 1AEB LINE =0FDF BLNF =0C21 BCNT =0C24 NEN0 1ADE
RBN0 1CAA FIN1 1AFC ELOC =0005 KLOC =0004 PLOC =0003 TCOL =0080
STOP 1F4D XZOP =0034 SCOR =0EF0 YPOS =0F0F XPOS =0F0C PMOV =10F5
SHOW =1721 STO1 1F5C STO2 1F63 STO3 1F7C STO4 1F8A ISP =001C
INPF =0FE3 POPS =40BC EMPT 1EFF AFP1 1D80 EMP2 1F09 AFP2 1D9B
EMP3 1F0D TIR =45DB SHR =27D3 SCRA 1A1E BORD =1313 FORE 18F1
NORF 1CF7 CMRG =0FEA INRH 17E1 NORM 18C1 NORT 1CFA FORY 1964
NOR0 1D04 NOR1 1D08 SCR1 1A23 INR2 17EB NOR2 1D14 SCR2 1A2C
FOR2 1920 NOR3 1D22 FOR3 1972 NOR4 1D2E FOR4 1975 FOR5 1997
FOR6 19C7 FOR7 193A FOR8 1903 WMS =4205 CDS =41D5 IJS =22DB
HLS =0004 SPS =40D0 FCS =43D6 RASC 1A0D PUSH =40A9 PASM =0027
WAST 1F32 YTST =0009 RGSV =0FC1 WAS2 1F33 RAS2 1A10 WAS3 1F35
RAS3 1A17 WAS4 1F37 POT =0006 CHT =0003 BKT 1A42 AFT 1D31
MAT =0000 FKT 1A3A AFTE 1D54 BOTH 17F0 ACTM =0026 AFTT 1D3A
AFT0 1D48 AFT1 1D62 FKT2 1A3F WAUD =41C8 WAU1 =41CC BMV2 19E3
NEXA 1AC4 NEXJ 1AE1 NEXT 1A8D NEXX 1AB4 NEXY 1AC1 MAXY =004D
PLYD =00FC PLYH =00FB JOYI =21AD JOYT =0C00 PLYT =00FD PLY0 =0C28
FJ1 1BC5 FK1 1A47 AF1B 1DE9 FJ10 1C31 JU11 180E FJ11 1C41
JU12 1815 AP12 1D93 FJ12 1C55 AP13 1D98 BM17 19E9 BM18 19EB
BM19 19F2 FJ2 1BCE AF2B 1DE5 AP2X 1DBB AP2Y 1DA3 AP20 =0C2C
EV21 1E4A AP21 1DAD AP22 1DB3 AP23 1DCC FJ3 1BD3 FJ4 1BDD
FJ5 1BF1 FJ6 1BFA FJ7 1C02 JU71 186A JU72 18A9 JU73 18B0
JU77 18A6 JU78 187F FJ8 1C1E FJ9 1C26